home *** CD-ROM | disk | FTP | other *** search
- .TH SWPSCLSRF
- 6 "IRIT Version 6.0"
- .SH NAME
- SWPSCLSRF
-
-
-
- SurfaceType SWPSCLSRF( CurveType CrossSection, CurveType Axis,
- NumericType Scale | CurveType ScaleCrv,
- CurveType FrameCrv | VectorType FrameVec
- | ConstType OFF,
- NumericType ScaleRefine )
-
- Constructs a generalized cylinder surface. This function sweeps a specified
- cross-section CrossSection along the provided Axis.
- The cross-section may be scaled by a constant value Scale, or scaled
- along the Axis parametric direction via a scaling curve ScaleCrv.
- By default, when frame specification is OFF, the orientation
- of the cross section is computed using the Axis curve tangent and
- normal. However, unlike the Frenet frame, attempt is made to minimize
- the normal change, as can happen along inflection points in Axis.
- If a VectorType FrameVec is provided as a frame orientation setting,
- it is used to fix the binormal direction to this value. In other words, the
- orientation frame has a fixed binormal. If a CurveType FrameCrv is
- specified as a frame orientation setting, this vector field curve is
- evaluated at each placement of the cross-section to yield the needed binormal.
- ScaleRefine is an integer value to define possible refinement of the
- Axis to reflect the information in ScalingCrv. Value of zero will
- force no refinement while value of n > 0 will insert n times the
- number of control points in ScaleCrv into Axis, better emulating
- the scaling requested.
- The resulting sweep is only an approximation of the real sweep. The
- scaling and axis placement will not be exact, in general.
- Manual refinement (in addition to ScaleRefine) of the axis curve at
- the proper location, where accuracy is important, should improve the accuracy
- of the output. The parametric domains of ScaleCrv and FrameCrv do
- not have to match the parametric domain of Axis, and their domains are
- made compatible by this function.
-
- Example:
-
- Cross = arc( vector( -0.11, -0.1, 0.0 ),
- vector( -0.1, -0.1, 0.0 ),
- vector( -0.1, -0.11, 0.0 ) ) +
- arc( vector( 0.1, -0.11, 0.0 ),
- vector( 0.1, -0.1, 0.0 ),
- vector( 0.11, -0.1, 0.0 ) ) +
- arc( vector( 0.11, 0.1, 0.0 ),
- vector( 0.1, 0.1, 0.0 ),
- vector( 0.1, 0.11, 0.0 ) ) +
- arc( vector( -0.1, 0.11, 0.0 ),
- vector( -0.1, 0.1, 0.0 ),
- vector( -0.11, 0.1, 0.0 ) ) +
- ctlpt( E2, -0.11, -0.1 );
- scaleCrv = cbspline( 3,
- list( ctlpt( E2, 0.05, 1.0 ),
- ctlpt( E2, 0.1, 0.0 ),
- ctlpt( E2, 0.2, 2.0 ),
- ctlpt( E2, 0.3, 0.0 ),
- ctlpt( E2, 0.4, 2.0 ),
- ctlpt( E2, 0.5, 0.0 ),
- ctlpt( E2, 0.6, 2.0 ),
- ctlpt( E2, 0.7, 0.0 ),
- ctlpt( E2, 0.8, 2.0 ),
- ctlpt( E2, 0.85, 1.0 ) ),
- list( KV_OPEN ) );
- Axis = circle( vector( 0, 0, 0 ), 1 );
- Frame = circle( vector( 0, 0, 0 ), 1 )
- * rotx( 90 ) * trans( vector( 1.5, 0.0, 0.0 ) );
-
- Srf1 = SWPSCLSRF( Cross, Axis, scaleCrv, off, 0 );
- Srf2 = SWPSCLSRF( Cross, Axis, scaleCrv, off, 2 );
- Srf3 = SWPSCLSRF( Cross, Axis, 1.0, Frame, 0 );
-
- constructs a rounded rectangle cross-section and sweeps it along a circle,
- while scaling and orienting in several ways. The axis curve Axis is
- automatically refined in Srf2 to better approximate the requested
- scaling.
-
- See also SWEEPSRF for sweep with no scale.
-